#!/bin/bash
 
# 基础配置
APP_NAME="signature-bridge-service"
JAR_PATH="./signature-bridge-service-0.0.1-SNAPSHOT.jar"
JAVA_OPTS="-Xms2g -Xmx4g -XX:+UseG1GC -Dfile.encoding=UTF-8 -Dspring.profiles.active=dev"
LOG_FILE="./run/$APP_NAME.log"
PID_FILE="./run/$APP_NAME.pid"
 
# 创建日志目录（如果不存在）
mkdir -p "$(dirname "$LOG_FILE")"
 
# 检查 Java 环境
if ! command -v java &> /dev/null; then
    echo "错误：未找到 Java 环境，请先安装 JDK/JRE"
    exit 1
fi
 
# 检查 JAR 文件是否存在
if [ ! -f "$JAR_PATH" ]; then
    echo "错误：JAR 文件不存在 $JAR_PATH"
    exit 1
fi
 
# 启动函数
start() {
    echo "正在启动 $APP_NAME..."
    nohup java $JAVA_OPTS -jar "$JAR_PATH" > "$LOG_FILE" 2>&1 &
    echo $! > "$PID_FILE"
    echo "启动完成，PID: $!"
}
 
# 停止函数
stop() {
    if [ -f "$PID_FILE" ]; then
        PID=$(cat "$PID_FILE")
        echo "正在停止 $APP_NAME (PID: $PID)..."
        kill $PID
        rm -f "$PID_FILE"
    else
        echo "错误：未找到 PID 文件 $PID_FILE"
    fi
}
 
# 查看状态
status() {
    if [ -f "$PID_FILE" ]; then
        PID=$(cat "$PID_FILE")
        if ps -p $PID > /dev/null; then
            echo "$APP_NAME 正在运行 (PID: $PID)"
        else
            echo "$APP_NAME 未运行（PID 文件残留）"
        fi
    else
        echo "$APP_NAME 未运行"
    fi
}
 
# 主逻辑
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 5
        start
        ;;
    status)
        status
        ;;
    *)
        echo "用法: $0 {start|stop|restart|status}"
        exit 1
esac
 
exit 0
